home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Tools / freeWAIS-sf-1.1 / ctype / ctype.h < prev    next >
C/C++ Source or Header  |  1994-12-05  |  4KB  |  129 lines

  1. /*                               -*- Mode: C -*- 
  2.  * ctype.h -- 
  3.  * ITIID           : $ITI$ $Header $__Header$
  4.  * Author          : Dmitry Kryukov <dima@ulysses.stack.serpukhov.su>
  5.  * Created On      : Wed Mar 23 09:39:11 1994
  6.  * Last Modified By: Ulrich Pfeifer
  7.  * Last Modified On: Tue Dec  6 17:25:08 1994
  8.  * Update Count    : 49
  9.  * Status          : Unknown, Use with caution!
  10.  */
  11.  
  12. #ifndef _CTYPE_H_
  13. #define _CTYPE_H_
  14.  
  15. #define    _U    0x01
  16. #define    _L    0x02
  17. #define    _N    0x04
  18. #define    _S    0x08
  19. #define    _P    0x10
  20. #define    _C    0x20
  21. #define    _X    0x40
  22. #define    _B    0x80
  23.  
  24. #ifndef CTYPE_C
  25. #ifdef STDC_HEADERS
  26. extern const char _fw_ctype_[];
  27. #else
  28. extern char _fw_ctype_[];
  29. #endif /* STDC_HEADERS */
  30. #endif /* CTYPE_C */
  31.  
  32. #define    isalnum(c)    ((_fw_ctype_ + 1)[(unsigned char)c] & (_U|_L|_N))
  33. #define    isalpha(c)    ((_fw_ctype_ + 1)[(unsigned char)c] & (_U|_L))
  34. #define    isascii(c)    ((unsigned)(c) <= 0177)
  35. #define    isblank(c)    ((c) == '\t' || (c) == ' ')
  36. #define    iscntrl(c)    ((_fw_ctype_ + 1)[(unsigned char)c] & _C)
  37. #define    isdigit(c)    ((_fw_ctype_ + 1)[(unsigned char)c] & _N)
  38. #define    isgraph(c)    ((_fw_ctype_ + 1)[(unsigned char)c] & (_P|_U|_L|_N))
  39. #define    islower(c)    ((_fw_ctype_ + 1)[(unsigned char)c] & _L)
  40. #define    isprint(c)    ((_fw_ctype_ + 1)[(unsigned char)c] & (_P|_U|_L|_N|_B))
  41. #define    ispunct(c)    ((_fw_ctype_ + 1)[(unsigned char)c] & _P)
  42. #define    isspace(c)    ((_fw_ctype_ + 1)[(unsigned char)c] & _S)
  43. #define    isupper(c)    ((_fw_ctype_ + 1)[(unsigned char)c] & _U)
  44. /*
  45. #define    isxdigit(c)    ((_fw_ctype_ + 1)[(unsigned char)c] & (_N|_X))
  46. */
  47. #define    isxdigit(c)    ((_fw_ctype_ + 1)[(unsigned char)c] & _X)
  48. #define    toascii(c)    ((c) & 0177)
  49.  
  50. /***********************************************************************/
  51. /* in cyrillic we have low symbols from 0xc0 to 0xdf and upper symbols */
  52. /*                       from 0xe0 to 0xff                             */
  53. /***********************************************************************/
  54. /*
  55. #define index(s,c) \
  56. ({ \
  57.      unsigned char * _index_; \
  58.      for (_index_=s; *_index_ && *_index_ != c; _index_++); \
  59.      (*_index_ == c)? _index_ : NULL; \
  60. })
  61. */
  62. extern unsigned char _lchars_[];
  63. extern unsigned char _uchars_[];
  64. /*
  65. #define    tolower(c) \
  66. ({ \
  67.     int __tolower_c = (unsigned char)(c); \
  68. \
  69.     isupper(__tolower_c) ? \
  70.         ( isascii(__tolower_c) ? __tolower_c - 'A' + 'a' : \
  71.         _lchars_[(int)(index(_uchars_,__tolower_c)-(char *)_uchars_)]) : \
  72.         __tolower_c; \
  73. })
  74. */
  75. /*
  76. #define    toupper(c) \
  77. ({ \
  78.     int __toupper_c = (unsigned char)(c); \
  79. \
  80.     islower(__toupper_c) ? \
  81.         ( isascii(__toupper_c) ? __toupper_c - 'a' + 'A' : \
  82.         _uchars_[(int)(index(_lchars_,__toupper_c) - (char *)_lchars_ )]) : \
  83.         __toupper_c; \
  84. })
  85. */
  86. #ifdef STDC_HEADERS
  87. #define    tolower(c) \
  88.     (isupper((unsigned char)(c)) ? \
  89.         ( isascii((unsigned char)(c)) ? ((unsigned char)(c) - 'A' + 'a') : \
  90.         (islower((unsigned char)(c)) ? (unsigned char)(c) : \
  91.              _lchars_[(int)(index(_uchars_,(unsigned char)(c)) - \
  92.                             (char *)_uchars_)])) \
  93.          : (unsigned char)(c))
  94.  
  95. #define    toupper(c) \
  96.         (islower((unsigned char)(c)) ? \
  97.         ( isascii((unsigned char)(c)) ? ((unsigned char)(c) - 'a' + 'A') : \
  98.         (isupper((unsigned char)(c)) ?(unsigned char)(c) : \
  99.              _uchars_[(int)(index(_lchars_,(unsigned char)(c)) - \
  100.                            (char *)_lchars_ )])) :  (unsigned char)(c))
  101. #else
  102. /* yet another version: I take 2 * 256 bytes to construct a - usually sparse -lookup
  103.  * table
  104.  * MN */
  105. #undef toupper
  106. #ifndef INTL_CTYPE_MODULE
  107. extern char tToUP[];
  108. extern char tToLOW[];
  109. #endif
  110. #define toupper(c)              ((int) (tToUP[ (int)(unsigned char)(c) ]))
  111.  
  112. #undef tolower
  113. #define tolower(c)              ((int) (tToLOW[ (int)(unsigned char)(c) ]))
  114.  
  115. #endif /* STDC_HEADERS */
  116.  
  117. #ifdef strcmp 
  118. #undef strcmp
  119. #endif
  120. #ifdef strncmp
  121. #undef strncmp
  122. #endif
  123. #define strcmp(A,B) mystrcmp((A),(B))
  124. #define strncmp(A,B,N) mystrncmp((A),(B),(N))
  125. #define strcasecmp(A,B) mystrcasecmp((A),(B))
  126.  
  127. #endif /* !_CTYPE_H_ */
  128.  
  129.